﻿using Flatland.GeneticProgramming.CoreTypes;
using Flatland.GeneticProgramming.SyntaxTree;

namespace Flatland.GeneticProgramming.Initializations {

    /// <summary>
    /// Interface for implementers of initialization strategies.
    /// </summary>
    interface IInitialization
    {
        /// <summary>
        /// Returns an Tree subject to the PrimitiveSet and max depth.
        /// </summary>
        /// <param name="maxDepth">Max depth of the Tree </param>
        /// <param name="primitiveSet">PrimitiveSet with functions and terminals for the Tree</param>
        /// <returns></returns>
        Tree Init(uint maxDepth, PrimitiveSet primitiveSet);
    }
}
